package com.haha.onebot.entity;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class OneBotMessage {

    /**
     * 收到事件的机器人 QQ 号
     */
    @JsonProperty("self_id")
    private Long selfId;

    /**
     * 发送者 QQ 号
     */
    @JsonProperty("user_id")
    private Long userId;

    @JsonProperty("target_id")
    private Long targetId;

    /**
     * 事件发生的时间戳
     */
    private Long time;

    /**
     * 	消息 ID
     */
    @JsonProperty("message_id")
    private Long messageId;

    /**
     *
     */
    @JsonProperty("message_seq")
    private Long messageSeq;

    @JsonProperty("real_id")
    private Integer realId;

    @JsonProperty("message_type")
    private String messageType;

    private Sender sender;

    /**
     * 原始消息内容
     */
    @JsonProperty("raw_message")
    private Object rawMessage;

    private Integer font;

    /**
     * {@link com.haha.onebot.enums.SubTypeEnum}
     */
    @JsonProperty("sub_type")
    private String subType;

    /**
     * 消息列表
     */
    private Object message;

    /**
     *
     */
    @JsonProperty("message_format")
    private String messageFormat;

    @JsonProperty("post_type")
    private String postType;

    @JsonProperty("group_id")
    private Long groupId;

    @JsonProperty("meta_event_type")
    private String metaEventType;

    private Object status;

    /**
     * 到下次心跳的间隔，单位毫秒
     */
    private Long interval;

    private Data data;

    private String echo;

    @JsonProperty("notice_type")
    private String noticeType;

    public String getPostType() {
        return postType == null ? "" : postType;
    }
}
